//@flow

/**
 * 初始化
 */

import { RemotePackage } from "react-native-code-push";
/**新版本来源 */
export class LastestVersionSource {
    /**来自app store */
    static FROM_APP_STORE :number = 0;
    /**来自code push */
    static FROM_CODE_PUSH :number = 1;
}
/**更新状态 */
export class UpdateStatus {
    static Waiting : number = -1;
    /**正在检查app store版本 */
    static CheckingAppStoreUpdate : number = 0;
    /**检查到app store有新版本 */
    static AppStoreHasUpdate : number = 1;
    /**检查到app store没有新版本 */
    static AppStoreNotUpdate : number = 2;
    /**正在检查code push是否有新版本 */
    static CheckingCodePushUpdate :number = 3;
    /**检查到code push有新版本 */
    static CodePushHasUpdate:number = 4;
    /**没有检查到code push有新版本 */
    static CodePushNotUpdate:number = 5;
    /**正在下载新版本 */
    static CodePushDownloadingUpdate:number =6;
    /**下载完成，正在准备安装 */
    static CodePushDownloadedUpdate:number =7;
    /**正在安装 */
    static CodePushInstalling : number = 8;
    /**安装完成 */
    static CodePushInstalled : number = 9;
}
export class VersionState {
    //应用商店版本
    latestAppVersion		    : string;
    //热更新版本
    latestCodePushLabel		: string;
    //新版本大小
    lastestSize        : number;
    //新版本更新内容描述
    lastestDes	   	    : string;
    //下载进度
    downloadProgress	: number;
    //当前状态
    updateState	    :UpdateStatus;
    //当前app store版本,异步获取
    metaAppVersion      :string;
    //当前热更新版本，异步获取
    metaLabel	        :string;
    //提示语
    tipLabel            :string;
    //是否强制更新
    isMandatory         :boolean;
    //更新来源
    fromSource          :LastestVersionSource;
    //code push远程包：将要下载的包
    remotePackage       :RemotePackage;
}

/**
 */
export const state : VersionState = {
    latestAppVersion:'0.0.0',
    latestCodePushLabel:'0',
    lastestSize:0,
    lastestDes:'暂无描述',
    downloadProgress:0,
    updateState:UpdateStatus.Waiting,
    metaAppVersion : '0.0.0',
    metaLabel:'0',
    tipLabel:'准备就绪',
    isMandatory:false,
    fromSource:LastestVersionSource.FROM_APP_STORE,
    remotePackage:null
}